Part Number Hot Search : 
MBT22 SCN2674T 406C34 LV5781 FXT449SM JRC455 C0603X A5800952
Product Description
Full Text Search
 

To Download 8044 Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  application note ap-283 november 1990 flexibility in frame size with the 8044 parviz khodadadi applications engineer order number: 292019-001
information in this document is provided in connection with intel products. no license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted by this document. except as provided in intel's terms and conditions of sale for such products, intel assumes no liability whatsoever, and intel disclaims any express or implied warranty, relating to sale and/or use of intel products including liability or warranties relating to fitness for a particular purpose, merchantability, or infringement of any patent, copyright or other intellectual property right. intel products are not intended for use in medical, life saving, or life sustaining applications. intel may make changes to specifications and product descriptions at any time, without notice. * third-party brands and names are the property of their respective owners. contact your local intel sales office or your distributor to obtain the latest specifications and before placing your product order. copies of documents which have an ordering number and are referenced in this document, or other intel literature, may be obtained from: intel corporation p.o. box 7641 mt. prospect, il 60056-7641 or call 1-800-879-4683 copyright ? intel corporation, 1996
flexibility in frame size with the 8044 contents page 1.0 introduction 1 1.1 normal operation 1 1.2 expanded operation 2 2.0 the serial interface unit 2 2.1 hardware description 2 2.2 reception of frames 3 2.3 transmission of frames 3 3.0 transmit and receive states 4 3.1 receive state sequence 4 3.2 transmit state sequence 4 4.0 transmission/reception of long frames (expanded operation) 7 4.1 description 7 4.2 siu registers 7 4.3 other possibilities 7 4.4 maximum data rate in expanded operation 8 5.0 modes of operation 9 5.1 flexible mode 9 5.2 auto mode 9 6.0 application examples 9 6.1 point-to-point application example 9 6.1.1 polling sequence 10 6.1.2 hardware 10 6.1.3 primary station software 10 6.1.4 secondary station software 14
contents page 6.2 multidrop application example 17 6.2.1 polling sequence 17 6.2.2 hardware 17 6.2.3 primary station software 19 6.2.4 secondary station software 20 6.2.5 receive interrupt routine 21 6.2.6 transmit subroutine 23 contents page 7.0 conclusions 23 appendi x a - listing of software modules for application example 1 a-1 appendi x b - listing of software modules for application example 2 b-1
flexibility in frame size with the 8044 1.0 introduction the 8044 is a serial communication microcontroller known as the rupi (remote universal peripheral in- terface). it merges the popular 8051 8-bit microcontrol- ler with an intelligent, high performance hdlc/sdlc serial communication controller called the serial inter- face unit (siu). the chip provides all features of the microcontroller and supports the synchronous data link control (sdlc) communications protocol. there are two methods of operation relating to frame size: 1) normal operation (limited frame size) 2) expanded operation (unlimited frame size) in normal operation the internal 192 byte ram is used as the receive and transmit buffer. in this opera- tion, the chip supports data rates up to 2.4 mbps exter- nally clocked and 375 kbps self-clocked. for frame sizes greater than 192 bytes, expanded operation is re- quired. in expanded operation the external ram, in conjunction with the internal ram, is used as the transmit and receive buffer. in this operation, the chip supports data rates up to 500 kbps externally clocked and 375 kbps self-clocked. in both cases, the siu han- dles many of the data link functions in hardware, and the chip can be configured in either auto or flexible mode. the discussion that follows describes the operation of the chip and the behavior of the serial interface unit. both normal and expanded operations will be further explained with extra emphasis on expanded operation and its supporting software. two examples of sdlc communication systems will also be covered, where the chip is used in expanded operation. the discussion as- sumes that the reader is familiar with the 8044 data sheet and the sdlc communications protocol. 1.1 normal operation in normal operation the on-chip cpu and the siu operate in parallel. the siu handles the serial commu- nication task while the cpu processes the contents of the on-chip transmit and receiver buffer, services inter- rupt routines, or performs the local real time processing tasks. the 192 bytes of on-chip ram serves as the interface buffer between the cpu and the siu, used by both as a receive and transmit buffer. some of the internal ram space is used as general purpose registers (e.g. r0 r7). the remaining bytes may be divided into at least two sections: one section for the transmit buffer and the other section for the receive buffer. in some applica- tions, the 192 byte internal ram size imposes a limita- tion on the size of the information field of each frame and, consequently, achieves less than optimal informa- tion throughput. figure 1 illustrates the flow of data when internal ram is used as the receive and transmit buffer. the on-chip cpu allocates a receive buffer in the internal ram and enables the siu. a receiving sdlc frame is processed by the siu and the information bytes of the frame, if any, are stored in the internal ram. then, the siu informs the cpu of the received bytes (serial channel interrupt). for transmission, the cpu loads the transmitting bytes into the internal ram and en- ables the siu. the siu transmits the information bytes in sdlc format. 292019 1 figure 1. transmission/reception data flow using internal ram 1
flexibility in frame size with the 8044 292019 2 figure 2. transmission/reception data flow using external ram 1.2 expanded operation in expanded operation the on-chip cpu monitors the state of the siu, and moves data from/to external buff- er to/from the internal ram and registers while recep- tion/transmission is taking place. if the cpu must service an interrupt during transmission or reception of a frame or transmit from internal ram, the chip can shift to normal operation. there is a special function register called siust, the contents of which dictate the operation of the siu. also, at data rates lower than 2.4 mbps, one section of the siu, in fixed intervals during transmission and re- ception, is in the ``standby'' mode and performs no function. the above two characteristics make it possi- ble to program the cpu to move data to/from external ram and to force the siu to repeat or skip some de- sired hardware tasks while transmission or reception is taking place. with these modifications, external ram can be utilized as a transmit and receive buffer instead of the internal ram. figure 2 graphically shows the flow of data when exter- nal ram is used. for reception, the receiving bytes are loaded into the receive control byte (rcb) register. then, the data in rcb is moved to external ram and the siu is forced to load the next byte into the rcb register - the chip believes it is receiving a control byte continuously. for transmission, information bytes (i- bytes) are loaded into a location in the internal ram and the chip is forced to transmit the contents of this location repeatedly. discussion of expanded operation is continued in sec- tions 4 and 5. first, however, sections 2 and 3 describe features of the 8044 which are necessary to further ex- plain expanded operation. 2.0 the serial interface unit 2.1 hardware description the serial interface unit (siu) of the rupi, shown in figure 3, is divided functionally into a bit processor (bip) and a byte processor (byp), each sharing some common timing and control logic. the bit processor is the interface between the siu bus and the serial port pins. it performs all functions necessary to transmit/re- ceive a byte of data to/from the serial data line (shift- ing, nrzi coding, zero insertion/deletion, etc.). the byte processor manipulates bytes of data to perform message formatting, transmitting, and receiving func- tions. for example, moving bytes from/to the special function registers to/from the bit processor. the byte processor is controlled by a finite-state ma- chine (fsm). for every receiving/transmitting byte, the byte processor executes one state. it then jumps to the next state or repeats the same state. these states will be explained in section 3. the status of the fsm is kept in an 8-bit register called siust (siu state coun- ter). this register is used to manipulate the behavior of the byte processor. as the name implies, the bit processor processes data one bit at a time. the speed of the bit processor is a function of the serial channel data rate. when one byte of data is processed by the bit processor, a byte bounda- 2
flexibility in frame size with the 8044 ry is reached. each time a byte boundary is detected in the serial data stream, a burst of clock cycles (16 cpu states) is generated for the byte processor to execute one state of the state machine. when all the procedures in the state are executed, a wait signal is asserted to terminate the burst, and the byte processor waits for the next byte boundary (standby mode). the lower the data rate, the longer the byte processor will stay in the standby mode. 2.2 reception of frames incoming data is nrzi decoded by the on-chip decod- er. it is then passed through the zero insertion/deletion (zid) circuitry. the zid not only performs zero inser- tion/deletion, but also detects flags and go aheads (ga) in the data stream. the data bits are then loaded into the shift register (sr) which performs serial to par- allel conversion. when 8 bits of data are collected in the shift register, the bit processor triggers the byte proces- sor to process the byte, and it proceeds to load the next block of data into the shift register. the serial data is also shifted, through sr, to a 16-bit register called ``fcs gen/chk'' for crc checking. the byte proc- essor takes the received address and control bytes from the sr shift register and moves them to the appropriate registers. if the contents of the shift register is expected to be an information byte, the byte processor moves them through a 3-byte fifo to the internal ram at a starting location addressed by the contents of the re- ceive buffer start (rbs) register. 2.3 transmission of frames in the transmit mode, the byte processor relinquishes a byte to the bit processor by moving it to a register called rb (ram buffer). the bit processor converts the data to serial form through the shift register, per- forms zero bit insertion, nrzi encoding, and sends the data to the serial port for transmission. finally, the contents of the fcs gen/chk and the closing flag are routed to the serial port for transmission. 292019 3 figure 3. siu block diagram 3
flexibility in frame size with the 8044 3.0 transmit and receive states the simplified receive and transmit state diagrams are shown in figures 4 and 5, respectively. the numbers on the left of each state represent the contents of the siust register when the byte processor is in the stand- by mode, and the instructions on the right of each state represent the ``state procedures'' of that state. when the byte processor executes these procedures the least three significant bits of the siust register are being incre- mented while the other bits remain unchanged. the byte processor will jump from one state to another without going into the standby mode when a condition- al jump procedure executed by the byte processor is true. 3.1 receive state sequence when an opening flag (7eh) is detected by the bit processor, the byte processor is triggered to execute the procedures of the flag state. in the flag state, the byte processor loads the contents of the rbs register into the special ram (srar) register. srar is the pointer to the internal ram. the byte processor decre- ments the contents of the receive buffer length (rbl) register and loads them into the dma count (dcnt) register. the fcs gen/chk circuit is turned on to monitor the serial data stream for frame check se- quence functions as per sdlc specifications. assuming there is an address field in the frame, con- tents of the siust register will then be changed to 08h, causing the byte processor to jump to the ad- dress state and wait (standby) for the next byte boundary. as soon as the bit processor moves the ad- dress byte into the sr shift register, a byte boundary is achieved and the byte processor is triggered to execute the procedures in the address state. in the address state the received station address is compared to the contents of the stad register. if there is no match, or the address is not the broadcast address (ffh), reception will be aborted (siust e 01h). oth- erwise, the byte processor jumps to the control state (siust e 10h) and goes into standby mode. the byte processor jumps to the control state if there exists a control field in the receiving frame. in this state the control byte is moved to the rcb register by the byte processor. note that the only action taken in this state is that a received byte, processed by the bit processor, is moved to rcb. there is no other hard- ware task performed, and dcnt and srar are not affected in this state. the next two states, push-1 and push-2, will be exe- cuted if frame check sequence (nfcs e 0) option is selected. in these two states the first and second bytes of the information field are pushed into the 3-byte fifo (fifo0, fifo1, fifo2) and the receive field length register (rfl) is set to zero. the 3-byte fifo is used as a pipeline to move received bytes into the internal ram. the fifo prevents transfer of crc bytes and the closing flag to the receive buffer (i.e., when the ending flag is received, the contents of fifo are flag, fcs1, and fcs0.) the three byte fifo is collapsed to one byte in no fcs mode. in the dma-loop state the byte processor pushes a byte from sr to fifo0, moves the contents of fifo2 to the internal ram addressed by the contents of srar, increments the srar and rfl registers, and decrements the dcnt register. if more information bytes are expected, the byte processor repeats this state on the next byte boundaries until dma buffer end occurs. the dma buffer end occurs if srar reaches 0bfh (192 decimal), dcnt reaches zero, or the rbp bit of the sts register is set. the bov-loop state, the last state, is executed if there is a buffer overrun. buffer overrun occurs when the number of information bytes received is larger than the length of the receive buffer (rfl l rbl). this state is executed until the closing flag is received. at the end of reception, if the fcs option is used, the closing flag and the fcs bytes will remain in the 3-byte fifo. the contents of the rcb register are used to update the nsnr (receive/send count) register. the siu updates the sts register and sets the serial inter- rupt. 3.2 transmit state sequence setting the rts bit puts the siu in the transmit mode. when the cts pin goes active, the byte processor goes into start-xmit state. in this state the opening flag is moved into the ram buffer (rb) register. the byte processor jumps to the next state and goes into the standby mode. if the pre-frame sync (pfs) option is selected, the pfs1 and pfs2 states will be executed to transmit the two pre-frame sync bytes (00h or 55h). in these two states the contents of the pre-frame sync generator are sent to the serial port while the zero insertion circuit (zid) is turned off. zid is turned back on automatical- ly on the next byte boundary. if the pfs option is not chosen, the byte processor jumps to the flag state. in this state, the byte proces- sor moves the contents of tbs into the srar register, decrements tbl and moves the contents into the dcnt register. the byte processor turns off the zid and turns on fcs gen/chk. the contents of fcs gen/chk are not transmitted unless the nfcs bit is 4
flexibility in frame size with the 8044 292019 4 figure 4. receive state diagram set. if a frame with the address field is chosen, it moves the contents of the stad register into the rb register for transmission. at the same time, the opening flag is being transmitted by the bit processor. in the address (siust e a0h) and control (siust e a8h) states, tcb and the first information byte are loaded into the rb register for transmission, respectively. note that in the control state, none of the registers (e.g. dcnt, srar) are incremented, and zid and fcs gen/chk are not turned on or off. the procedures in the dma-loop state are similar to the procedures of the dma-loop in the receive state diagram. the srar register pointer to the internal ram is incremented, and the dcnt register is decre- mented. the contents of dcnt reach zero when all the information bytes from the transmit buffer are trans- mitted. a byte from ram is moved to the rb register for transmission. this state is executed on the following byte boundaries until all the information bytes are transmitted. the fcs1 and the fcs2 states are executed to transmit the frame check sequence bytes generated by the fcs generator, and the end-flag state is executed to transmit the closing flag. the xmit-action and the abort-action states are executed by the byte processor to synchronize the siu with the cpu clock. the xmit-action or the abort-action state is repeated until the byte processor status is updated. at the end, the sts and the tmod registers are updated. the two abort-sequence states (siust e e0h and siust e e8h) are executed only if transmission is aborted by the cpu (rts or tbf bit of the sts register is cleared) or by the serial data link (cts signal goes inactive or shut-off occurs in loop mode.) 5
flexibility in frame size with the 8044 292019 6 figure 5. transmit state diagram 6
flexibility in frame size with the 8044 4.0 transmission/reception of long frames (expanded operation) in this application note, a frame whose information field is more than 192 bytes (size of on-chip ram) is referred to as a long frame. the 8044 can access up to 64000 bytes of external ram. therefore, a long frame can have up to 64000 information bytes. 4.1 description during transmission or reception of a frame, while the bit processor is processing a byte, the byte processor, after 16 cpu states, is in the standby mode, and the internal registers and the internal bus are not used. the period between each byte boundary, when the byte processor is in the standby mode, can be used to move data from external ram to one of the byte processor registers for transmission and vice versa for reception. the contents of the siust register, which dictate the state of the byte processor, can be monitored to recog- nize the beginning of each sdlc field and the consecu- tive byte boundaries. by writing into the siust register, the byte processor can be forced to repeat or skip a specific state. as an example, the siu can be forced to repeatedly put the received bytes into the rcb register. this is accom- plished by writing e7h into the siust register when the byte processor goes into the standby mode. the byte processor, therefore, executes the control state at the next byte boundary. for transmission, the byte processor is put in the trans- mit mode. when transmission of a frame is initiated, the user program calls a subroutine in which the state of the byte processor is monitored by checking the con- tents of the siust register. when the byte processor reaches a desired state and goes into standby, the cpu loads the first byte of the internal ram buffer with data and moves the byte processor to the control state. the routine is repeated for every byte. at the end, the program returns from the subroutine, and the siu finishes its task (see application examples). for reception, a software routine is executed to move data to external ram and to force the siu to repeat the control state. the control state is repeated because, as shown in the receive state diagram, the only action taken by the byte processor, in the control state, is to move the contents of sr to the rcb register. none of the registers (e.g. srar and dcnt) are in- cremented. a similar comment justifies the use of the control state for transmission. in the transmit control state, contents of a location in the on-chip ram addressed by tbs is moved to rb for transmis- sion. 4.2 siu registers to write into the siust register, the data must be com- plemented. for example, if you intend to write 18h into the siust register, you should write e7h to the register. the data read from siust is, however, true data (i.e. 18h). read and write accesses to the siust, stad, dcnt, rcb, rbl, rfl, tcb, tbl, tbs, and the 3-byte fifo registers are done on even and odd phases, re- spectively. therefore, there is no bus contention when the cpu is monitoring the registers (e.g. siust), and siu is simultaneously writing into them. there is no need to change or reset the contents of any siu register while transmitting or receiving long frames, unless the byte processor is forced to repeat a state in which the contents of these registers are modi- fied. note that the srar register can not be accessed by the cpu; therefore, avoid repeating the dma- loop states. if srar increments to 192, the siu will be interrupted and communication will be aborted. 4.3 other possibilities the internal ram, in conjunction with an external buffer (ram or fifos), can be used as a transmit and receive buffer. in other words, expanded and normal operation can be used together. for example, if a frame with 300 information bytes is received and only 255 of them are moved to an external buffer, the remaining bytes (45 bytes) will be loaded into the internal ram by the siu (assuming rbl is set to 45 or more). the contents of rfl indicate the number of bytes stored in the internal ram. for transmission, the contents of the external buffer can be transmitted followed by the contents of the internal buffer. if the internal ram is not used, contents of the rbl register can be 0 and contents of the tbl register must be set to 1. the contents of the tbs register can be any location in the internal ram. the transmission and reception procedures for long frames with no fcs are similar to those with fcs. the exception is the contents of the siust register should be compared with different values since the two fcs states of the transmit and receive flow charts are skipped by the byte processor. if a frame format with no control byte is chosen, a location in the ram addressed by tbs should be used for transmission as with control byte format. the fifo can be used for reception. the stad register can be used for transmission if no zero insertion is required. 7
flexibility in frame size with the 8044 if the rupi is used in auto mode (see section 5), it will still respond to rr, rnr, rej, and unnumbered poll (up) sdlc commands with rr or rnr auto- matically, without using any transmit routine. for ex- ample, if the on-chip cpu is busy performing some real time operations, the siu can transmit an information frame from the internal buffer or transmit a supervisory frame without the help of cpu (normal operation). maximum data rate using this feature is limited primar- ily by the number of instructions needed to be executed during the standby mode. transmission or reception of a frame can be timed out so that the cpu will not hang up in the transmit or receive procedures if a frame is aborted. or, if the data rate allows enough time (standby time is long enough), the cpu can monitor the siust register for idle mode (siust e 01h). it is also possible to transmit multiple opening or clos- ing flags by forcing the byte processor to repeat the end-flag state. 4.4 maximum data rate in expanded operation assuming there is no zero-insertion/deletion, the bit processor requires eight serial clock periods to process one block of data. the byte processor, running on the cpu clock, processes one byte of data in 16 cpu states (one state of the state diagrams). each cpu state is two oscillator periods. at an oscillator frequency of 12 mhz, the cpu clock is 6 mhz, and 16 cpu states is 2.7 m s. at a 3 mbit rate with no zero-insertion/dele- tion, there is exactly enough time to execute one state per byte (16 states at 6 mhz e 8 bits at 3m baud). in other words, the standby time is zero. figure 6 demonstrates portions of the timing relation- ship between the byte processor and the bit processor. in each state, the actions taken by the processors, plus the contents of the siust register, are shown. when the byte processor is running, the contents of siust are unknown. however, when it is in the standby mode, its contents are determinable. the maximum data rate for transmitting and receiving long frames depends on the number of instructions needed to be executed during standby, and is propor- 292019 7 6a. reception 292019 8 6b. transmission figure 6. portions of the bip/byp timing relationship 8
flexibility in frame size with the 8044 tional to the oscillator frequency. the time the byte processor is in the standby mode, waiting for the bit processor to deliver a processed byte, is at least equal to eight serial clock periods minus 16 cpu states. if an inserted zero is in the block of data, the bit processor will process the byte in nine serial clock periods. the equation for theoretical maximum data rate is giv- en as: (2tclcl) c (16 states) a ( y of instruction cycles) c (12tclcl) e (8tdcy) equation (1) where: tclcl is the oscillator period. tdcy is the serial clock period. at an oscillator frequency of 12 mhz and baud rate of 375 kbps, about 18 instruction cycles can be executed when the byte processor is in the standby mode. at a 9600 baud rate, there is time to execute about 830 in- struction cycleseplenty of time to service a long inter- rupt routine or perform bit-manipulation or arithmetic operations on the data while transmission or reception is taking place. 5.0 modes of operation the 8044 has two modes: flexible mode and auto mode. in auto mode, the chip responds to many sdlc commands and keeps track of frame sequence number- ing automatically without on-chip cpu intervention. in flexible mode, communication tasks are under con- trol of the on-chip cpu. 5.1 flexible mode for transmission, the cpu allocates space for transmit buffer by storing values for the starting location and size of the transmit buffer in the tbs and the tbl registers. it loads the buffer with data, sets the tbf and the rts bits in the sts register, and proceeds to per- form other tasks. the siu activates the rts line. when the cts signal goes active, the siu transmits the frame. at the end of transmission, the siu clears the rts bit and interrupts the cpu (si set). for reception, the cpu allocates space for receive buff- er by loading the beginning address and length of the receive buffer into the rbs and rbl registers, sets the rbe bit, and proceeds to perform other tasks. the siu, upon detection of an opening flag, checks the next received byte. if it matches the station address, it will load the received control byte into rcb, and received information bytes into the receive buffer. at the end of reception, if the frame check sequence (fcs) is cor- rect, the siu clears rbe and interrupts the cpu. 5.2 auto mode in the auto mode, the 8044 can only be a secondary station operating in the sdlc ``normal response mode''. the 8044 in auto mode does not transmit mes- sages unless it is polled by the primary. for transmission of an information frame, the cpu al- locates space for the transmit buffer, loads the buffer with data, and sets the tbf bit. the siu will transmit the frame when it receives a valid poll-frame. a frame whose poll bit of the control byte is set, is a poll-frame. the poll bit causes the rts bit to be set. if tbf were not set, the siu would respond with receive not ready (rnr) sdlc command if rbp e 1, or with receive ready (rr) sdlc command if rbp e 0. after transmission rts is cleared, and the cpu is not interrupted. for reception, the procedure is the same as that of flexible mode. in addition, the siu sets the rts bit if the received frame is a poll-frame (causing an automat- ic response) and increments the ns and nr counts accordingly. 6.0 application examples two application examples are given to provide addi- tional details about the procedures used to transmit and receive long frames. in the first application example, procedures to construct receive and transmit software routines for the point-to-point frame format are de- scribed. the point-to-point frame has the information field and the fcs field enclosed between two flags (see figure 7). in the second example software code is gen- erated for reception and transmission of the standard sdlc frame. the sdlc frame has the pattern: flag, address, control, information, fcs, flag. the first example focuses on the construction of trans- mit and receive code which allow the chip to transmit and receive long frames. the second example shows how to make more use of the 8044 features, such as the on-chip phase locked loop for clock recovery and auto- matic responses in the auto mode to demonstrate the capability of the 8044 to achieve high throughput when expanded operation is used. 6.1 point-to-point application example a point-to-point communication system was developed to receive and transmit long frames. the system con- sists of one primary and one secondary station. al- though multiple secondary stations can be used in this 9
flexibility in frame size with the 8044 292019 9 point-to-point standard sdlc figure 7. point-to-point and standard sdlc frame formats 292019 10 figure 8. secondary responses to primary station commands system, one secondary is chosen to simplify the primary station's software and focus on the long frame software code. both the primary and the secondary stations are in flexible mode and the external clock option is used for the serial channel. the maximum data rate is 500 kbps. the fcs bytes are generated and checked automatically by both stations. 6.1.1 polling sequence the polling sequence, shown in figure 8, takes place continuously between the primary and the secondary stations. the primary transmits a frame with one infor- mation byte to the secondary. the information byte is used by the secondary as an address byte. the second- ary checks the received byte, and if the address matches, the secondary responds with a long frame. in this example, the information field of the frame is cho- sen to be 255 bytes long. since there is only one second- ary station, the address always matches. upon success- ful reception of the long frame, the primary transmits another frame to the secondary station. 6.1.2 hardware the schematic of the secondary station is given in fig- ure 9. the circuit of the primary station is identical to the secondary station with the exception of pin 11 (data) being connected to pin 14 (t0). in the pri- mary station, the 8044 is interrupted when activity is detected on the communication line by the on-chip tim- er (in counter mode). this is explained more later. the serial clock to both stations is supplied by a pulse gen- erator. the output of the pulse generator (not shown in the diagram) is connected to pin 15 of the 8044s. since the two stations are located near each other (less than 4 feet), line drivers are not used. the central processor of each station is the 8044. the data link program is stored in a 2kx8 eprom (2732a), and a 2kx8 static ram (am9128) is used as the external transmit and receive buffer. the rts pin is connected to the cts pin. for simplicity, the stations are assumed to be in the sdlc normal respond mode after hardware reset. 6.1.3 primary station software the assembly code for the primary station software is listed in appendix a. the primary software consists of the main routine, the siu interrupt routine, and the receive interrupt routine. the receive interrupt routine is executed when a long frame is being received. in the flow charts that follow, all actions taken by the siu appear in squares, and actions taken by the on-chip cpu appear in spheres. 10
flexibility in frame size with the 8044 figure 9. secondary station hardware 292019 11 11
flexibility in frame size with the 8044 main routine first, the chip is initialized (see figure 10). it is put in flexible mode, externally clocked, and ``flag-informa- tion field-fcs-flag'' frame format. pre-frame sync option (pfs e 1) and automatic frame check se- quence generation/detection (nfcs e 0) are selected. the on-chip transmit buffer starts at location 20h and the transmit buffer length is set to 1. this one byte buffer contains the address of the secondary station. there is no on-chip receive buffer since the long frame being received is moved to the external buffer. the rts, tbf, and rbe bits are set simultaneously. set- ting the rts and tbf bits causes the siu to transmit the contents of the transmit buffer. 292019 12 main program figure 10. primary station flow charts siu interrupt routine after transmission of the frame, the siu interrupts the on-chip cpu (si is set). in the siu interrupt service routine, counter 0 is initialized and turned on (see fig- ure 11). the user program returns to perform other tasks. after reception of the long frame, the siu inter- rupt routine is executed again. this time, rts, tbf, and rbe are set for another round of information ex- change between the two stations. siu never interrupts while reception or transmission is taking place. the siu registers are updated and the si is set (serial interrupt) after the closing flag has been received or transmitted. an siu interrupt never occurs if the receive interrupt routine or the transmit subrou- tine is being executed. setting the rbe bit of the sts register puts the rupi in the receive mode. however, the jump to the receive interrupt routine occurs only when a frame appears on the serial port. incoming frames can be detected using the pre-frame sync. option and one of the cpu timers in counter mode. the counter external pin (t0) is con- nected to the data line (pin 11 is tied to pin 14). setting the pfs (pre-frame sync.) bit will guarantee 16 tran- sitions before the opening flag of a flame. 292019 13 siu interrupt routine figure 11. primary station flow charts 12
flexibility in frame size with the 8044 the counter registers are initialized such that the coun- ter interrupt occurs before the opening flag of a frame. when the pfs transitions appear on the data line, the counter overflows and interrupts the cpu. the cpu program jumps to the timer interrupt service routine and executes the receive routine. in the receive routine, the received frame is processed, and the information bytes are moved to the external ram. note that the maximum count rate of the 8051 counter is (/24 of the oscillator frequency. at 12 mhz, the data rate is limit- ed to 500 kbps. another method to detect a frame on the data line and cause an interrupt is to use an external ``flag-detect'' circuit to interrupt the cpu. the ``flag detect'' circuit can be an 8-bit shift register plus some ttl chips. if this option is used, the rupi must operate in externally clocked mode because the clock is needed to shift the incoming data into the shift register. with this option, the maximum data rate is not limited by the maximum count rate of the 8051 counter. receive interrupt routine in normal operation, the byte processor executes the procedures of the flag state, jumps to the con- trol state without going into the standby mode, and executes 10 2 procedure of the state (see figure 4). it then jumps to the push-1 state and goes into the standby mode. at the following byte boundaries, the byte processor executes the push-1, push-2, and dma-loop states, respectively. the receive interrupt routine as shown in the flow chart of figure 12 and described below forces the byte processor to repeatedly execute the control state before the push-1 state is executed. the following is the step by step procedure to receive long frames: 1) turn off the cpu counter and save all the impor- tant registers. jump to the receive interrupt routine, execution of the instructions to save registers, and initialization of the receive buffer pointer take place while the pre-frame sync bytes and the opening flag are being received. this is about three data byte periods (48 cpu cycles at 500 kbps). 2) monitor the siust register for standby in the push-1 state (siust e 18h). when the siust contents are 18h, the byte processor is waiting for the first information byte. the bit processor has al- ready recognized the flag and is processing the first information byte. 3) in the standby mode, move the byte processor into the control state by writing ``efh'' (comple- ment of 10h) into the siust register. when the next byte boundary occurs, the bit processor has processed and moved a byte of data into the sr register. the byte processor moves the contents of sr into the rcb register, jumps to the push-1 state (siust e 18h), and waits. 4) monitor the siust register for standby in the push-1 state. when the contents of siust be- comes 18h, the contents of rcb are the first infor- mation byte of the information field. 5) while the byte processor is in the standby mode, move the contents of rcb to an external ram or an i/o port. 6) check for the end of the information field. the end can be detected by knowing the number of bytes transmitted, or by having a unique character at the end of information field. the length of the informa- tion field can be loaded into the first byte(s) re- ceived. the receive routine can load this byte into the loop counter. 7) if the byte received is not the last information byte, move the byte processor back to standby in the control state and repeat steps 4 through 6. oth- erwise, return from the interrupt routine. upon returning from the receive interrupt routine, the byte processor automatically executes the push-1, push-2, and dma-loop before it stops. this causes the remaining information bytes (if any) to be stored in the internal ram at the starting location specified by the contents of rbs register. at the end of the cycle, the closing flag and the crc bytes are left in the fifo. the rfl register will be incremented by the number of bytes stored in the internal ram. then, the sts and nsnr registers are updated, and an appropriate re- sponse is generated by the siu. the software to perform the above task is given in ta- ble 1. in this example, the number of instruction cycles executed during standby is 12 cycles. 13
flexibility in frame size with the 8044 table 1. codes for long frame reception receive codes cycles ## ## ## rec: clr tr0 mov a, y 18h wait1: cjne a,siust,wait1 nexti: mov siust, y oefh 2 mov a, y 18h 1 wait2: cjne a,siust,wait2 2 mov a,rcb 1 movx @ dptr,a 2 inc dptr 2 djnz r5,nexti 2 reti end 12 cycles 292019 14 receive interrupt routine figure 12. primary station flow charts 6.1.4 secondary station software the assembly code for the secondary station software is given in appendix a. the secondary station contains the transmit subroutine which is called for transmission of long frames. main routine as shown in the secondary station flow chart (figure 13), the external transmit buffer (external ram) is loaded with the information data (ffh, feh, fdh, . . . ) at starting location 200h. the internal transmit buffer (on chip ram) starts at location 20h (tbs e 20h), and the transmit buffer length (tbl) is set to 1. the on-chip cpu, in the transmit subroutine, moves the information bytes from the external ram to this one byte buffer for transmission. the receive buffer starts at location 10h and the receiver buffer length is 1. this buffer is used to buffer the frame transmitted by the primary. the received byte is used as an address byte. the secondary is configured like the primary station. it is put in flexible mode, externally clocked, point-to- point frame format. the pfs bit is set to transmit two bytes before the first flag of a frame. the rbe bit is set to put the chip in receive mode. upon reception of a valid frame, the siu loads the received information byte into the on-chip receive buffer and interrupts the cpu. siu interrupt routine in the serial interrupt routine, the rbe bit is checked (see figure 14). since rbe is clear, a frame has been received. the received information byte is compared with the contents of the station address (stad) regis- ter. 14
flexibility in frame size with the 8044 292019 15 main program figure 13. secondary station flow charts if they match, the secondary will call the transmit sub- routine to transmit the long frame. upon returning from the transmit subroutine, the rbe bit is set, and program returns from the siu interrupt. after trans- mission of the closing flag, siu interrupt occurs again. in the interrupt routine, the rbe is checked. since the rbe is set, the program returns from the siu interrupt routine and waits until another long frame is received. if the secondary were in auto mode, the chip must be ready to execute the transmit routine upon reception of a poll-frame; otherwise, the chip automatically trans- mits the contents of the internal transmit buffer if the tbf bit is set, or transmits a supervisory command (rr or rnr) if tbf is clear. transmit subroutine in normal operation the byte processor executes the start-transmit state and jumps to the pfs1 state. while the bit processor is transmitting some un- wanted bits, the byte processor executes the pfs1 state and jumps to the standby mode in the pfs2 state. 292019 16 siu interrupt figure 14. secondary station flow charts while the bit processor is transmitting the first pre- frame sync byte, the byte processor executes the pfs2 state and jumps to the standby mode in the flag state. the flag state is executed when the bit proces- sor begins to transmit the second pre-frame sync byte. when the flag is being transmitted, the byte processor executes the 98-1, 98-2, 98-3, and 98-4 procedures of the flag state, and jumps to execute the a8-1 proce- dure of the control state. when the opening flag is transmitted, the contents of rb are the first informa- tion byte. (see transmit state diagram.) in the transmit subroutine (see figure 15), the byte processor is forced to repeat the control state be- fore the dma-loop state. in the control state, the contents of a ram location addressed by the tbs register are moved to the rb register. the following is the step by step procedure to transmit long frames: 1) put the chip in transmit mode by setting the rts and tbf bits. 2) move an information byte from external ram to a location in the internal ram addressed by the con- tents of tbs. 15
flexibility in frame size with the 8044 292019 17 transmit subroutine figure 15. secondary station flow charts 3) monitor the siust register for the standby mode in the dma-loop state (siust e b0h). when siust is b0h, the opening flag has been transmit- ted, and the first information byte is being transmit- ted by the bit processor. 4) if there are more information bytes, move the byte processor back to the control state, and repeat steps 2 through 4. otherwise, continue. 5) move byte processor to the standby mode in the control state (siust e a8h) and return from the subroutine. the byte processor automatically executes the remain- ing states to send the fcs bytes and the closing flag. after the completion of transmission, siu updates the sts and nsnr registers and interrupts the cpu. if the contents of the tbl register were more than 1, the siu transmits (tbl) b 1 additional bytes from the internal ram at starting address (tbs) a 1 because it executes the dma-loop state (tbl) b 1 additional times. the byte processor should not be programmed to skip the dma-loop state, because the transmission of fcs bytes is enabled in this state. the maximum baud rate that can be used with these codes is calculated by adding the number of instruction cycles executed, during the standby mode, between each byte boundaries (see table 2). using equation 1, the maximum data rate, based on the transmit software, is 509 kbps; however, the maxi- mum count rate of the counter limits the data rate to 500 kbps. table 2. codes for long frame transmission transmit codes cycles ## ## ## tran: mov dptr, y 200h mov r5, y 0ffh setb tbf setb rts loop: movx a, @ dptr mov @ r1,a mov a, y 0b0h wait1: cjne a,siust,wait1 2 inc dptr 2 movx a, @ dptr 2 mov @ r1,a 1 djnz r5,nexti 2 mov siust, y 57h ret nexti: mov siust, y 57h 2 mov a, y 0b0h 1 jmp wait1 1 end 13 cycles 16
flexibility in frame size with the 8044 6.2 multidrop application performance of long frame in addition to the features of the 8044 are described using a simple multidrop com- munication system in which three rupis, one as a master and the other two as secondary stations, trans- mit and receive long frames alternately (see figure 16). all stations perform automatic zero bit insertion/dele- tion, nrzi decoding/encoding, frame check se- quence (fcs) generation/detection, and on-chip clock recovery at a data rate of 375 kbps. the primary and the secondary station's software code is given in appendix b. these programs, for simplicity, assume only reception of information and supervisory frames. it is also assumed that the frames are received and transmitted in order. all stations use very similar transmit and receive routines. this code is written for standard sdlc frames (see figure 7). 6.2.1 polling sequence the primary station, in flexible mode, transmits a long frame (for this example, 255 i-bytes), polls one of the secondary stations, and acknowledges a previously re- ceived frame simultaneously (see figure 17). both sec- ondary stations, in auto mode, detect the transmitted frame and check its address byte. one of the secondary stations receives the frame, stores the information bytes in an external ram buffer, and transmits the same data back to the primary. after reception of the frame, the primary polls and transmits a long frame to the other secondary station which will respond with the same long frame. 6.2.2 hardware the schematic of the secondary station hardware is shown in figure 18. the primary station's hardware is similar to the secondary station's hardware. the excep- tion is in secondary stations only, where the rts signal is inverted and tied to the interrupt 0 input pin (int0). in the primary station, rts is tied to cts. at each station, software codes are stored in external eprom (2732a). static ram (2kx8) is used as external trans- mit/receive buffer. there is no hardware handshaking done between the stations. the serial clock is extracted from the data line using the on-chip phase locked loop. 292019 18 figure 16. sdlc multidrop application example 292019 19 figure 17. polling sequence between the primary and secondary stations 17
flexibility in frame size with the 8044 figure 18. secondary station hardware 292019 20 18
flexibility in frame size with the 8044 6.2.3 primary software main routine during initialization (see figure 19), the 8044 is set to flexible mode, internally clocked at 375 kbps, and configured to handle standard sdlc frames. the on- chip receive and transmit buffer starting addresses and lengths are selected. the external transmit buffer is chosen from physical location 200h to location 2ffh (255 bytes). the external transmit buffer (external ram) is loaded with data (ffh, feh, fdh, fch, . . . 00h). timer 0 is put in counter mode and set to priority 1. the counter register (tl0) is loaded such that interrupt occurs after 8 transitions on the data line. the pre-frame sync option (setting bit 2 of the smd register) is selected to guarantee at least 16 transitions before the opening flag of a frame. 292019 21 main program figure 19. primary station flow charts the station address register (stad) is loaded with ad- dress of one of the secondary stations. the rts, tbf, and rbe bits of the sts register are simultaneously set and a call to the transmit routine follows. the transmit routine transmits the contents of the external transmit buffer. at the end of transmission, rts and tbf are cleared by the siu, and siu interrupt occurs. in flex- ible mode, siu interrupt occurs after every transmis- sion or reception of a frame. siu interrupt routine in the siu interrupt service routine (see figure 20), si is cleared and the rbe bit is checked. if rbe is set, a long frame has been transmitted. the first time through the siu interrupt service routine, the rbe test indi- cates a long frame has been transmitted to one of the secondary stations. therefore, the counter is initialized 292019 22 siu interrupt figure 20. primary station flow charts 19
flexibility in frame size with the 8044 and turned on. the program returns from the interrupt routine before a frame appears on the communication channel. when a frame appears on the communication line, counter interrupt occurs and the receive routine is exe- cuted to move the incoming bytes into the external ram. after reception of the frame and return from the receive routine, siu interrupt occurs again. in the siu interrupt routine, rbe is checked. since the rbe bit is clear, a frame has been received. therefore, the appropriate ns and nr counters are incremented and loaded into the tcb register (two pairs of internal ram bytes keep track of ns and nr counts for the two secondary stations). transmission of a frame to the next secondary station is enabled by setting the rts and the tbf bits. the chip is also put in receive mode (rbe set), and a call to transmit routine is made. after transmission, siu interrupt occurs again, and the pro- cess continues. 6.2.4 secondary software main routine both secondary stations have identical software (ap- pendix b). the only differences are the station address- es. contents of the stad register are 55h for one sta- tion and 44h for the other. 292019 23 main program figure 21. secondary station flow charts during initialization, the chip is set to auto mode, standard sdlc frame, and internally clocked at 375 kbps (see figure 21). internal buffer registers: rbs, rbl, tbs, and tbl are initialized. the rbe bit is set and the counter 0 is turned on. the secondary is configured to transmit an information frame every time it is polled. the rts pin is inverted and tied to int1 pin. external interrupt 1 is enabled and set to interrupt on low to high transition of the rts signal. this will cause an interrupt (ex1 set) after a frame is transmitted. in the interrupt routine the cts pin is cleared to prevent any automatic response from the secondary. if the cts pin were not disabled, the secondary station would respond with a supervisory frame (rnr) since the tbf is set to zero by the siu due to the acknowledge. in the siu interrupt routine, the cts pin is cleared after the tbf bit is set. if this option is not used, the primary should acknowledge the previously received frame and poll for the next frame in two separate transmissions. siu interrupt routine when a frame is received, counter 0 interrupt occurs and the receive routine is executed (see figure 22). if the incoming frame is addressed to the station, the in- formation bytes are stored in external ram; other- wise, the program returns from the receive routine to perform other tasks. at the end of the frame, siu inter- rupt occurs. in auto mode, siu interrupt occurs when- ever an information frame or a supervisory frame is received. transmission will not cause an interrupt. in the siu interrupt service routine, the am bit of the sts is checked. if am bit is set, the interrupt is due to a frame whose address did not match with the address of the station. in this case, nfcs, am, and the bov bits are cleared, the rbe bit is set, the counter 0 is initialized and turned on, and program returns from the interrupt rou- tine. if am bit is not set, a valid frame has been received and stored in the external ram. tbf bit is set, cts pin is activated, counter 0 is disabled and a call to transmit routine is made which transmits the contents of exter- nal transmit buffer. this frame also acknowledges the reception of the previously received frame (ns and nr are automatically incremented). upon return from the transmit routine rbe is set and counter 0 is turned on, thereby putting the chip in the receive mode for anoth- er round of data exchange with the primary. note that, if the second station is in receive mode, and the counter is enabled and turned on, the cpu will be interrupted each time a frame is on the communication channel. if the frame is not addressed to the secondary station, the chip enters the receive routine, executes only a few lines of code (address comparison) and re- turns to perform other tasks. this interrupt will not occupy the cpu for more than two data byte periods (43 microseconds at 375 kbps). at the end of the frame, the bov bit is set by the siu, and the siu interrupt occurs. in the siu interrupt service routine, 20
flexibility in frame size with the 8044 292019 24 siu interrupt figure 22. secondary station flow charts the rbe bit is set and the counter is turned on which put the chip back in the receive mode. 6.2.5 receive interrupt routine assembly code for the receive interrupt routine can be found in both primary and secondary software (appen- dix b). the receive interrupt routine of the primary station is very similar to that of the primary station in example 1. in the following two sections the receive and transmit routine of the secondary stations are dis- cussed. in the receive interrupt service routine (see figure 23), counter 0 is turned off, important registers are saved, receive buffer starting address and receive buffer length of the external ram are set (do not confuse the exter- nal ram settings with that of the internal ram buff- er.) after reception of an opening flag, the byte processor jumps to the address state and waits until the bit processor processes and moves the receiving address byte to sr. then, the byte processor is triggered to execute the state. in the secondary stations, the cpu monitors the siust register for the address state (siust e 08h). when the address state is reached, the byte processor is moved to the next state (control state), and the address state is skipped. therefore, when the address byte is moved to sr, the byte processor executes the control state rather than the address state and then jumps to the push-1 state. the execution of the control state causes the contents of sr (the received address byte) to be loaded into the rcb register. the cpu checks the contents of rcb with the contents of the stad (station address) register. if they match, the receive routine continues to store the received in- formation bytes in the external ram buffer; other- wise, the byte processor is moved to the very last state (bov-loop), and the program returns from the rou- tine to perform other tasks. the byte processor executes the bov-loop state in each byte boundary until the closing flag of the frame is reached. it then sets the bov bit and interrupts the cpu (serial interrupt si set). in the serial interrupt routine the counter 0 is turned back on, and the station is reset back to the receive mode (rbe set). in normal operation, in the address state, the re- ceived address byte is automatically compared with the station address. if they match, the byte processor exe- cutes the remaining states; otherwise, the byte proces- sor goes into the idle mode (siust e 01h) and waits for the opening flag of the next frame. in the expanded operation, this state is skipped to avoid idle mode. if the byte processor went into the idle mode, clocks which run the byte processor would be turned off, and the byte processor can not be moved to any other states by the cpu. when the byte processor is in idle mode, counter 0 can not be turned on immediately because counter interrupt occurs on the same frame, and pro- gram returns to the receive routine and stays there. if the address byte matches the station address, the byte processor is moved to the control state again. this time, after execution of the control state the con- tents of rcb are the received control byte. cpu investigates the type of received frame by check- ing the received control byte. if the receiving frame is not an information frame (i.e. supervisory frame), exe- cution of receive routine will be terminated to free the 21
flexibility in frame size with the 8044 figure 23. receive flow chart (secondary station) 292019 25 22
flexibility in frame size with the 8044 cpu. in auto mode, the siu checks the control byte and responds automatically in response to the supervi- sory frame. after the control byte is received, it is saved in the stack. the byte processor is moved to the control state so that the next incoming byte will also be loaded into the rcb register. the byte processor remains in control state until a byte is processed by the bit processor and moved to sr. the byte processor is then triggered to move the contents of sr to the rcb regis- ter. the cpu monitors siust and waits until the first information byte is loaded into the rcb register. when byte processor reaches the push-1 state (siust e 18h), rcb contains the first information byte. the byte is moved to external ram (receive buffer), and the byte processor is moved back to the control state. the process continues until all of the information bytes are received. when all the information bytes are received, the program returns from the routine. the byte processor automatically goes through the remain- ing states, updates the sts register, and interrupts the cpu as it would in normal operation. 6.2.6 transmit subroutine the transmit subroutine codes can be found in the pri- mary and the secondary software (appendix b). the transmit subroutines of the primary and secondary sta- tions are identical. a call to transmit routine is made when the rts and tbf bits of the sts register are set. in auto mode, rts is set automatically upon reception of a poll-frame (poll bit of the control byte is set). in the transmit routine (see figure 15), the starting ad- dress and the transmit buffer length of the external buffer are set. then the cpu monitors the siust regis- ter for control state (siust e a8h). in the control state the bit processor transmits the con- trol byte, while the byte processor goes into the standby mode after it has moved the contents of a location in the internal ram addressed by the contents of trans- mit buffer start (tbs) register to the rb register. while the control byte is being transmitted and the byte processor is in standby, the cpu moves an information byte from external ram to the internal ram location addressed by tbs. the byte processor is then moved to control state. this will cause the byte processor, in the next byte boundary, to move the contents of the same location in the internal ram to the rb register (see transmit state diagram.) when this byte is being transmitted, the byte processor jumps to the dma-loop state (siust e b0h) and waits. when the dma-loop state is reached (cpu monitors siust for b0h), the cpu loads the next in- formation byte into the same location in the internal ram and moves the byte processor to the control state before it gets to execute the dma-loop state. note that the same location in the internal ram is used to transmit the subsequent information bytes. when all the information bytes from the external ram are transmitted, the byte processor is free to go through the remaining states so that it will transmit the fcs bytes and the closing flag. 7.0 conclusions the rupi, with addition of only a few bytes of code, can accept and transmit large frames with some com- promise in the maximum data rate. it can be used in auto or flexible mode, with external or internal clock- ing, automatic crc checking, and zero bit insertion/ deletion. in addition, almost all of the internal ram is available to be used as general purpose registers, or in conjunction with the external ram as transmit and receive buffers. all in all, this feature opens up new areas of applica- tions for this device. besides transmitting/receiving long frames, it may now be possible to perform arith- metic operations or bit manipulation (e.g. data scram- bling) while transmission or reception is taking place, resulting in high throughput. transmission of continu- ous flags and transmission with no zero insertion are also possible. in addition to unlimited frame size, an on-chip control- ler, automatic sdlc responses, full support of sdlc protocol, 192 bytes of internal ram, and the highest data rate in self clocked mode compared to other chips make this product very attractive. 23

flexibility in frame size with the 8044 appendix a listing of software modules for application example 1 292019 28 292019 29 a-1
flexibility in frame size with the 8044 292019 30 292019 31 a-2
flexibility in frame size with the 8044 appendix b listing of software modules for application example 2 292019 32 292019 33 b-1
flexibility in frame size with the 8044 292019 34 292019 35 292019 36 b-2
flexibility in frame size with the 8044 292019 37 292019 38 292019 39 b-3
flexibility in frame size with the 8044 292019 40 b-4
intel, supply filler
intel corporation, 2200 mission college blvd., santa clara, ca 95052; tel. (408) 765-8080 intel corporation (u.k.) ltd., swindon, united kingdom; tel. (0793) 696 000 intel japan k.k., ibaraki-ken; tel. 029747-8511 printed in u.s.a./xxxx/1296/b10m/xx xx


▲Up To Search▲   

 
Price & Availability of 8044

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X